1
โค้ดเป็นข้อมูล: ธรรมชาติแบบโฮโมไอคอนิกของอีลิกซ์
AI019Lesson 10
00:00

ลักษณะของความโฮโมไอคอนิก

ภาษาโฮโมไอคอนิก: ภาษาที่การแสดงผลภายในถูกแสดงออกในภาษาเอง ในการเขียนโปรแกรมอีลิกซ์ รหัสต้นฉบับไม่ใช่แค่ข้อความธรรมดา แต่เป็นโครงสร้างข้อมูลแบบฝังกันที่เรียกว่า ต้นไม้โครงสร้างคำสั่งเชิงนามธรรม (AST).

1. กฎตรรกะของการแทนค่า

อีลิกซ์ทำให้โครงสร้างคำสั่งเชิงนามธรรม (AST) ง่ายขึ้น โดยการแทนค่าตัวแปรพื้นฐานด้วยตัวมันเอง อะตอม ตัวเลข ลิสต์ (รวมถึงลิสต์แบบคีย์เวิร์ด) ไบนารี และคู่ที่มีองค์ประกอบสองรายการ จะถูกแทนค่าภายในโดยไม่ต้องห่อหุ้มซับซ้อน

iex> quote do: [do: 1]
[do: 1]
iex> quote do: "binaries"
"binaries"

2. โครงสร้างคู่ของโครงสร้างคำสั่งเชิงนามธรรม (AST)

การแปลงโค้ดส่วนใหญ่จะได้ผลลัพธ์เป็นคู่ที่มีองค์ประกอบสามชิ้น: {ชื่อฟังก์ชัน, เมตาดาต้า, อาร์กิวเมนต์}. เช่น การเรียกใช้ฟังก์ชันเช่น 1 + 2 กลายเป็น {:+, [line: 1], [1, 2]}. ซึ่งทำให้ภาษาสามารถจัดการกับ โค้ดเป็นข้อมูล.

3. มาโคร: การเลื่อนการดำเนินการ

มาโครคือ "วิธีหนึ่งในการเลื่อนการดำเนินการของประโยคโดยการแทรกโค้ดกลับไปยังโครงสร้างภายในโปรแกรมของเรา" ขณะที่ฟังก์ชันมาตรฐานประเมินอาร์กิวเมนต์ ก่อน การเรียกใช้ มาโครจะได้รับ โครงสร้างคำสั่งเชิงนามธรรมแบบดิบซึ่งทำให้สามารถแทรกตรรกะก่อนการคอมไพล์ได้

$$\text{รหัสต้นฉบับ} \xrightarrow{\text{Quote}} \text{คู่โครงสร้างคำสั่งเชิงนามธรรม} \xrightarrow{\text{มาโคร}} \text{โครงสร้างคำสั่งเชิงนามธรรมที่เปลี่ยนแปลงแล้ว}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>